<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" href="../../plugins/layui/css/layui.css" media="all">
</head>


<body>
<div class="layui-fluid">
<h1>激活Tomcat的JMX远程配置</h1>
<br/>
<br/>
<div class="layui-text">
	<p>要通过JMX远程监控Tomcat，首先需要激活Tomcat的JMX远程配置。</p>
	<ul>
	<li>
	<h3>① 修改脚本</h3>
	<p>先修改Tomcat的启动脚本，windows下为bin/catalina.bat（linux下为catalina.sh），添加以下内容，8999是jmxremote使用的端口号，第二个false表示不需要鉴权：</p>

	<pre class="layui-code">
		set JMX_REMOTE_CONFIG=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false  
		set CATALINA_OPTS=%CATALINA_OPTS% %JMX_REMOTE_CONFIG%
	</pre>           	
	<p>要注意以上语句的位置不能太后面，可以加在【if "%OS%" == "Windows_NT" setlocal】一句后的大段的注释后面。</p>
	</li>
	<br/>
	<li>
		<h3>② 鉴权</h3>
		<p>上面的配置是不需要鉴权的，如果需要鉴权则添加的内容为：</p>
		<pre class="layui-code">
			set JMX_REMOTE_CONFIG=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access  
			set CATALINA_OPTS=%CATALINA_OPTS% %JMX_REMOTE_CONFIG%  
		</pre>
	</li>
	<br/>
	<li>
		<h3>③ 复制并修改授权文件</h3>
		<p>$JAVA_HOME/jre/lib/management下有jmxremote.access和jmxremote.password的模板文件，将两个文件复制到$CATALINA_BASE/conf目录下</p>
		<p>◆ 修改$CATALINA_BASE/conf/jmxremote.access 添加内容：</p>
		<ul>			
			<li>monitorRole readonly</li>
			<li>controlRole readwrite</li>		     
		</ul>
		<p>◆ 修改$CATALINA_BASE/conf/jmxremote.password 添加内容：</p>
		<ul>			
			<li>monitorRole chenfeng</li>
			<li>controlRole chenfeng</li>		     
		</ul>
		<br/>
		<p>注意： 如果进行了以上步骤导致Tomcat启动不了，那么很可能是密码文件的权限问题</p>
		<p>需要修改jmxremote.password文件的访问权限，只有运行Tomcat的用户才能拥有访问权限 ：</p>
		<br/>
		<p>Windows的NTFS文件系统下，选中文件，点右键 -->“属性”-->“安全”--> 点“高级”--> 点“更改权限”--> 去掉“从父项继承....”--> 弹出窗口中选“删除”，这样就删除了所有访问权限。再选“添加”--> “高级”--> “立即查找”，选中你的用户（或用户组，如果选用户不行那就选用户组），例administrator，点“确定"，“确定"。来到权限项目窗口，勾选“完全控制”，点“确定”，OK了。</p>
		<br/>
		<p>官方的提示：<br/>
      	The password file should be read-only and only accessible by the operating system user Tomcat is running as.</p>
	</li>
	<br/>
	<li>
		<h3>④验证配置</h3>
		<p>重新启动Tomcat，在Windows命令行输入“netstat -a”查看配置的端口号是否已打开，如果打开，说明上面的配置成功了。</p>
	</li>
	<br/>
	<li>
		<h3>⑤ 使用jconsole测试JMX</h3>
		<p>
			运行$JAVA_HOME/bin目录下的jconsole.exe，打开J2SE监视和管理控制台，然后建立连接，如果是本地的Tomcat则直接选择然后点击连接，如果是远程的，则进入远程选项卡，填写地址、端口号、用户名、口令即可连接。。Mbean属性页中给出了相应的数据，Catalina中是tomcat的，java.lang是jvm的。对于加粗的黑体属性值，需双击一下才可看内容。  
		</p>
	</li>
	<br/>
	<br/>
	<br/>
	<br/>
</ul>
</div>  
</div>
<script src="../../plugins/layui/layui.js"></script>
<script>
layui.use('code', function(){ //加载code模块
	  layui.code({
		  about:false
	  }); //引用code方法
	});	      
</script>
</body>
</html>







 